//
//  PrivacyGuideView.swift
//  KoiAccounting
//
//  Created by 纪洪文 on 25.04.25.
//

import SwiftUI

struct PrivacyGuideView: View {
    
    @State var isOpenPrivacyView:Bool = false
    @State var isOpenTermsView:Bool = false
    
    var argeeClick:()->Void
    var exitClick:()->Void
    
    var body: some View {
        ZStack {
            Color.black.opacity(0.3).ignoresSafeArea()
            VStack {
                Text("用户协议与隐私政策确认")
                    .font(.system(size: 18))
                    .fontWeight(.medium)
                    .foregroundColor(Color.koiColorTitle)
                
                Text("欢迎来到锦鲤记账👏")
                    .font(.system(size: 25))
                    .fontWeight(.medium)
                    .foregroundColor(Color.koiColorTitle)
                    .padding(.top, 20)
                
                Text(agreementText)
                    .environment(\.openURL, OpenURLAction { url in
                        handleLinkClick(url:url) // 必须实现点击处理
                        return .discarded // 阻止默认浏览器跳转
                    })
                    .font(.system(size: 13))
                    .foregroundColor(Color.koiColorTitleSecond)
                    .lineSpacing(3)
                    .padding(.top, 15)
                
                Button(action: {
                    argeeClick()
                }) {
                    Text("同意并进入")
                        .koiPrimaryButton()
                        .padding(.top, 20)
                }
                
                Button(action:{
                    exitClick()
                }) {
                    Text("不同意并退出")
                        .font(.system(size: 13))
                        .foregroundColor(Color.koiColorTitleSecond)
                        .padding(.top, 15)
                }
            }
            .padding(20)
            .background(Color.koiColorBackground)
            .shadow(color:Color.koiColorDivider.opacity(0.22), radius:5, x:0, y:-5)
            .cornerRadius(16)
            .padding(30)
            .fullScreenCover(isPresented: $isOpenPrivacyView, content: {PrivacyWebView.privacyView})
            .fullScreenCover(isPresented: $isOpenTermsView, content: {PrivacyWebView.termsView})
        }
    }

    // MARK: - 带链接的富文本生成
    private var agreementText: AttributedString {
        var text = AttributedString("你的信任对我们至关重要，锦鲤记账将持续采取互联网行业的通用技术措施和数据安全保障措施，全力保护你的个人信息安全。\n请你在使用前认真阅读《用户协议》和《隐私政策》，当你点击【同意并进入】即表示你已充分阅读、理解并接受《用户协议》和《隐私政策》的全部内容，我们将自行或通过第三方收集您在使用本服务时的手机设备信息和个人行为信息，进行必要的业务运营与客户支持。若选择不同意并退出，将无法使用我们的产品与服务。")
        
        // 用户协议链接样式
        if let range = text.range(of: "《用户协议》") {
            text[range].link = URL(string: "app://user_agreement")
            text[range].foregroundColor = .blue
            text[range].underlineStyle = .single
        }
        
        // 隐私政策链接样式
        if let range = text.range(of: "《隐私政策》") {
            text[range].link = URL(string: "app://privacy_policy")
            text[range].foregroundColor = .blue
            text[range].underlineStyle = .single
        }
        
        return text
    }

    // MARK: - 链接点击处理
    private func handleLinkClick(url: URL) {
        switch url.host() {
        case "user_agreement":
            isOpenTermsView = true
        case "privacy_policy":
            isOpenPrivacyView = true
        default:
            break
        }
    }
}

#Preview {
    PrivacyGuideView(argeeClick: {}, exitClick: {})
}
